<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 执行器函数（excutor函数）
        // promise必须得传执行器函数！
        // 执行器回调函数 是一个 同步回调函数！


        //PromiseState默认值 "pending" 等待
        //PromiseResult默认结果值 undefined 未定义 
        // let p = new Promise((resolve,reject)=>{
        //     // console.log(111);

        //     // promise对象状态变成 "fulfilled"
        //     // promise的结果值变成 "123"
        //     // resolve(123);

        //     // promise状态变成"rejected"
        //     // promise结果值 error
        //     // reject("error");

        // });

        // console.log(222);

        // console.log(p);
        

        // 1.  promise实例初始状态为 pending，初始值为undefined
        // 1.1 PromiseState 状态
        // 1.2 PromiseResult 结果值

        // 2. promise的excutor函数是同步回调
        // let p = new Promise((resolve,reject)=>{
        //     // console.log(123);
        //     // resolve(123);
        //     reject('error');
        // });

        // console.log("end");

        // 当状态发生改变的时候才会调用then
        // p.then((value)=>{
        //     console.log(value);
        // },(reason)=>{
        //     console.log(reason);
        // });


        // 3. promise的excutor函数内调用resolve函数后
        // 3.1 状态 pending => fulfilled（成功）
        // 3.2 结果值 => resolve内参数

        // 4. promise的excutor函数内调用reject函数后
        // 4.1 状态 pending => rejected（失败）
        // 4.2 结果值 => rejected内参数

        // 5. 状态只能修改一次
        // 5.1 以第一次修改状态为准
        // let p = new Promise((resolve,reject)=>{
        //     setTimeout(() => {
        //         resolve(123);
        //     }, 0);
        //     reject(456);
        // });

        // p.then((value)=>{
        //     console.log(value);
        // },(reason)=>{
        //     console.log(reason);
        // });


        // 6. excutor函数内有异常，那么状态被更改为rejected,值为异常信息
        // 抛出错误 promise状态就会变为失败 "rejected"
        // 结果值： 抛出的信息
        // let p = new Promise((resolve,reject)=>{
        //     throw new Error("错误信息");
        // });


        // console.log(p);
        // 6.1 出现异常，
        // 6.2 抛出错误对象
        // 6.3 抛出字符串
        


    </script>
</body>

</html>